xend: notify xenpv device model that console info is ready
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 24 Feb 2010 09:38:35 +0000 (09:38 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 24 Feb 2010 09:38:35 +0000 (09:38 +0000)
Sometimes PV domain with vfb doesn't boot up. /sbin/kudzu is stuck.
After investigation, I've found that the evtchn for console is not
bound at all.

Normal sequence of evtchn initialization in qemu-dm for xenpv is:
1) watch xenstore backpath (/local/domain/0/backend/console/<domid>/0)
2) read console info (/local/domain/<domid>/console/{type, ring-ref,
port..=
})
3) bind the evtchn to the port.

But in some case, xend writes to the backpath before the console info
is prepared, and never write to the backpath again. So the qemu-dm
fails at 2) and never reach to 3).

When this happens, manually xenstore-write command on Domain-0
resumes the guest.

Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com>
tools/python/xen/xend/XendDomainInfo.py

index 577905d459446997f1323f4a1d833726a886b1a7..585a73bff3fce80cbfab94b6c6ea8b25152b158a 100644 (file)
@@ -1642,6 +1642,11 @@ class XendDomainInfo:
                 console_uuid = serial_consoles[0].get('uuid')
                 self.info.console_update(console_uuid, 'location',
                                          self.console_port)
+                # Notify xenpv device model that console info is ready
+                if not self.info.is_hvm() and self.info.has_rfb():
+                    console_ctrl = self.getDeviceController('console')
+                    # The value is unchanged. Just for xenstore watcher
+                    console_ctrl.writeBackend(0, 'uuid', console_uuid)
                 
 
         # Update VNC port if it exists and write to xenstore